package main

import (
	"basic-go/webook/internal/web/middleware"
	"net/http"

	"github.com/gin-contrib/sessions"
	"github.com/gin-contrib/sessions/cookie"
	"github.com/gin-gonic/gin"
)

func main() {
	server := InitWebServer()

	server.GET("/hello", func(ctx *gin.Context) {
		ctx.String(http.StatusOK, "hello,启动成功了")
	})

	// 启动web server
	server.Run(":8080")
}

func useSession(server *gin.Engine) {
	login := &middleware.LoginMiddlewareBuilder{}
	// 存储数据的,也就是你的userId存哪里
	// 这里使用了cookie的存储,即将session中的内容经过加密后存储在那一串sessionid中
	// 实际就是存储在浏览器的cookie中
	store := cookie.NewStore([]byte("secret"))

	// 基于内存的实现
	// 第一个参数是用于验证的key(用于保证session数据在传输过程中没有没篡改或者伪造)
	// 第二个参数是用于加密的key(确保数据在存储在客户端（例如 cookie）时是安全的，即使客户端可以访问这些数据，但由于是加密的，所以数据无法被轻易理解)
	// store := memstore.NewStore([]byte("xdD5chBdlL3kmbN5CspPcF1RW2UL4VuX"),
	// 	[]byte("l1ZBjpVBIdoc0karpY7GZEG1i40RrRDz"))

	// 基于redis的实现
	// store, err := redis.NewStore(16, "tcp", "localhost:6379", "",
	// 	[]byte("xdD5chBdlL3kmbN5CspPcF1RW2UL4VuX"),
	// 	[]byte("l1ZBjpVBIdoc0karpY7GZEG1i40RrRDz"))
	// if err != nil {
	// 	panic(err)
	// }

	server.Use(sessions.Sessions("ssid", store), login.CheckLogin())
}
